package br.com.datatraffic.fiscal.entidades;

// Generated 10/07/2009 10:49:54 by Hibernate Tools 3.2.0.b9

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

import org.hibernate.annotations.Cache;

/**
 * UnidadeFiscal generated by hbm2java
 */
@Entity
@Table(name = "TBUNIDADE_FISCAL")
public class UnidadeFiscal implements java.io.Serializable {

	private Long id;
	private PostoFiscal postoFiscal;
	private Municipio5 municipio;
	private TipoUnidadeFiscal tipoUnidadeFiscal;
	private String nome;
	private Date dataInicioOperacao;
	private Date dataFimOperacao;
	private String descricao;
	private String logradouro;
	private String numero;
	private String diretorioImagem;
	private Double tempoConsultaHistorico;
	private Double tempoTicketAberto;
	private Long capacidadeVeiculoPatio;
	private Double tempoLimiteAberturaTicket;
	private int tempoMinutoReabertura;
	private List<Usuario5> usuarios = new ArrayList<Usuario5>(0);
	private List<EquipamentoFaixa5> equipamentoFaixas = new ArrayList<EquipamentoFaixa5>(
			0);
	private Double percentualErro;
	private Double tempoTrafegoOrfao;

	public UnidadeFiscal() {
	}

	public UnidadeFiscal(Long id, PostoFiscal postoFiscal, Municipio5 municipio,
			TipoUnidadeFiscal tipoUnidadeFiscal, String nome,
			Date dataInicioOperacao) {
		this.id = id;
		this.postoFiscal = postoFiscal;
		this.municipio = municipio;
		this.tipoUnidadeFiscal = tipoUnidadeFiscal;
		this.nome = nome;
		this.dataInicioOperacao = dataInicioOperacao;
	}

	public UnidadeFiscal(Long id, PostoFiscal postoFiscal, Municipio5 municipio,
			TipoUnidadeFiscal tipoUnidadeFiscal, String nome,
			Date dataInicioOperacao, Date dataFimOperacao, String descricao,
			String logradouro, String numero, String diretorioImagem,
			Double tempoConsultaHistorico, Double tempoTicketAberto,
			Long capacidadeVeiculoPatio, Double tempoLimiteAberturaTicket,
			List<Usuario5> usuarios, List<EquipamentoFaixa5> equipamentoFaixas) {
		this.id = id;
		this.postoFiscal = postoFiscal;
		this.municipio = municipio;
		this.tipoUnidadeFiscal = tipoUnidadeFiscal;
		this.nome = nome;
		this.dataInicioOperacao = dataInicioOperacao;
		this.dataFimOperacao = dataFimOperacao;
		this.descricao = descricao;
		this.logradouro = logradouro;
		this.numero = numero;
		this.diretorioImagem = diretorioImagem;
		this.tempoConsultaHistorico = tempoConsultaHistorico;
		this.tempoTicketAberto = tempoTicketAberto;
		this.capacidadeVeiculoPatio = capacidadeVeiculoPatio;
		this.tempoLimiteAberturaTicket = tempoLimiteAberturaTicket;
		this.usuarios = usuarios;
		this.equipamentoFaixas = equipamentoFaixas;
	}

	@Id
	@SequenceGenerator(name = "SQ_TBUNIDADE_FISCAL", sequenceName = "SQ_TBUNIDADE_FISCAL", allocationSize = 1)
	@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "SQ_TBUNIDADE_FISCAL")
	@Column(name = "UNIDADE_FISCAL_ID", unique = true, nullable = false, precision = 38, scale = 0)
	public Long getId() {
		return this.id;
	}

	public void setId(Long id) {
		this.id = id;
	}

	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "POSTO_FISCAL_ID", nullable = false)
	public PostoFiscal getPostoFiscal() {
		return this.postoFiscal;
	}

	public void setPostoFiscal(PostoFiscal postoFiscal) {
		this.postoFiscal = postoFiscal;
	}

	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "MUNICIPIO_ID", nullable = false)
	public Municipio5 getMunicipio() {
		return this.municipio;
	}

	public void setMunicipio(Municipio5 municipio) {
		this.municipio = municipio;
	}

	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "TIPO_UNIDADE_FISCAL_ID", nullable = false)
	public TipoUnidadeFiscal getTipoUnidadeFiscal() {
		return this.tipoUnidadeFiscal;
	}

	public void setTipoUnidadeFiscal(TipoUnidadeFiscal tipoUnidadeFiscal) {
		this.tipoUnidadeFiscal = tipoUnidadeFiscal;
	}

	@Column(name = "NOME", nullable = false, length = 50)
	public String getNome() {
		return this.nome;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}

	
	@Temporal(TemporalType.TIMESTAMP)
	@Column(name = "DATA_INICIO_OPERACAO", nullable = false)
	public Date getDataInicioOperacao() {
		return this.dataInicioOperacao;
	}

	public void setDataInicioOperacao(Date dataInicioOperacao) {
		this.dataInicioOperacao = dataInicioOperacao;
	}

	
	@Temporal(TemporalType.TIMESTAMP)
	@Column(name = "DATA_FIM_OPERACAO")
	public Date getDataFimOperacao() {
		return this.dataFimOperacao;
	}

	public void setDataFimOperacao(Date dataFimOperacao) {
		this.dataFimOperacao = dataFimOperacao;
	}

	@Column(name = "DESCRICAO", length = 100)
	public String getDescricao() {
		return this.descricao;
	}

	public void setDescricao(String descricao) {
		this.descricao = descricao;
	}

	@Column(name = "LOGRADOURO", length = 100)
	public String getLogradouro() {
		return this.logradouro;
	}

	public void setLogradouro(String logradouro) {
		this.logradouro = logradouro;
	}

	@Column(name = "PERCENTUAL_ERRO")
	public Double getPercentualErro() {
		return percentualErro;
	}

	public void setPercentualErro(Double percentualErro) {
		this.percentualErro = percentualErro;
	}

	@Column(name = "NUMERO", length = 100)
	public String getNumero() {
		return this.numero;
	}

	public void setNumero(String numero) {
		this.numero = numero;
	}

	@Column(name = "DIRETORIO_IMAGEM", length = 500)
	public String getDiretorioImagem() {
		return this.diretorioImagem;
	}

	public void setDiretorioImagem(String diretorioImagem) {
		this.diretorioImagem = diretorioImagem;
	}

	@Column(name = "TEMPO_CONSULTA_HISTORICO", precision = 50, scale = 0)
	public Double getTempoConsultaHistorico() {
		return this.tempoConsultaHistorico;
	}

	public void setTempoConsultaHistorico(Double tempoConsultaHistorico) {
		this.tempoConsultaHistorico = tempoConsultaHistorico;
	}

	@Column(name = "TEMPO_TICKET_ABERTO", precision = 50, scale = 0)
	public Double getTempoTicketAberto() {
		return this.tempoTicketAberto;
	}

	public void setTempoTicketAberto(Double tempoTicketAberto) {
		this.tempoTicketAberto = tempoTicketAberto;
	}

	@Column(name = "CAPACIDADE_VEICULO_PATIO", precision = 38, scale = 0)
	public Long getCapacidadeVeiculoPatio() {
		return this.capacidadeVeiculoPatio;
	}

	public void setCapacidadeVeiculoPatio(Long capacidadeVeiculoPatio) {
		this.capacidadeVeiculoPatio = capacidadeVeiculoPatio;
	}

	@Column(name = "TEMPO_LIMITE_ABERTURA_TICKET", precision = 50, scale = 0)
	public Double getTempoLimiteAberturaTicket() {
		return this.tempoLimiteAberturaTicket;
	}

	public void setTempoLimiteAberturaTicket(Double tempoLimiteAberturaTicket) {
		this.tempoLimiteAberturaTicket = tempoLimiteAberturaTicket;
	}

	@OneToMany(fetch = FetchType.LAZY, mappedBy = "unidadeFiscal")
	public List<Usuario5> getUsuarios() {
		return this.usuarios;
	}

	public void setUsuarios(List<Usuario5> usuarios) {
		this.usuarios = usuarios;
	}

	@OneToMany(fetch = FetchType.LAZY, mappedBy = "unidadeFiscal")
	public List<EquipamentoFaixa5> getEquipamentoFaixas() {
		return this.equipamentoFaixas;
	}

	public void setEquipamentoFaixas(List<EquipamentoFaixa5> equipamentoFaixas) {
		this.equipamentoFaixas = equipamentoFaixas;
	}

	@Column(name = "TEMPO_TRAFEGO_ORFAO", precision = 50, scale = 0)
	public Double getTempoTrafegoOrfao() {
		return tempoTrafegoOrfao;
	}
	

	public void setTempoTrafegoOrfao(Double tempoTrafegoOrfao) {
		this.tempoTrafegoOrfao = tempoTrafegoOrfao;
	}

	@Column(name = "TEMPO_MINUTO_REABERTURA")
	public int getTempoMinutoReabertura() {
		return tempoMinutoReabertura;
	}

	public void setTempoMinutoReabertura(int tempoMinutoReabertura) {
		this.tempoMinutoReabertura = tempoMinutoReabertura;
	}

	// The following is extra code specified in the hbm.xml files
	private static final long serialVersionUID = 1L;
	// end of extra code specified in the hbm.xml files

}
